

#include "Public.h"

//
void  Data_Initial(void )           //数据初始化
{
  u32  temp_data;

  
  IWDG_ReloadCounter();    /*reload*/  
  
//=============================flash==========================================
  gc.WriteData_delay_time=10000;//避免上电错误，还没读出数据就先写数据了
  gc.ReadData_cmd =1;                   //读flash  
  flash_data();                         //flash读取存储 重写操作   

  

//--------------------------系统工作模式要保存的-----------------------------
  
   if (  id_485>0xff ||id_485==0  )//
  {
    id_485=1;                 //数据初始值
    gc.WriteData_cmd =1;                 //写数据初始值
  }     
  if (  work_time1>20000 || work_time1==0 )
  {
    work_time1=1000;                 //数据初始值
    gc.WriteData_cmd =1;                 //写数据初始值
  }
  if (  work_time2>60000 || work_time2==0 )
  {
    work_time2=8000;                 //数据初始值
    gc.WriteData_cmd =1;                 //写数据初始值
  }  
  if (  work_time3>20000 || work_time3==0 )
  {
    work_time3=2000;                 //数据初始值
    gc.WriteData_cmd =1;                 //写数据初始值
  }    
  if (  work_time4>20000 || work_time4==0 )
  {
    work_time4=1000;                 //数据初始值
    gc.WriteData_cmd =1;                 //写数据初始值
  }   
  
  
  if (  stop_times>1000  )
  {
    stop_times=5;                 //数据初始值
    gc.WriteData_cmd =1;                 //写数据初始值
  }    
  if (  run_times>4200000000 )
  {
    run_times=0;                 //数据初始值
    gc.WriteData_cmd =1;                 //写数据初始值
  }     

     
  
  if (  modle>=20  )
  {
    modle=0;                 //数据初始值
    gc.WriteData_cmd =1;                 //写数据初始值
  }   
  
//======在public.h 中写死============ 
   modle=SYS_mod;                 // 
//=======================================    
   
   update_mod();//更新型号

   
  if (  run_time>4200000000 )
  {
    run_time=0;                 //数据初始值
    gc.WriteData_cmd =1;                 //写数据初始值
  }     

 
  if (  water_consumption>1000 || water_consumption==0)//L
  {
    water_consumption=5;                 //数据初始值
    gc.WriteData_cmd =1;                 //写数据初始值
  }   
  
  if (  waters>4200000000  )//定标L
  {
    waters=0;                 //数据初始值
    gc.WriteData_cmd =1;                 //写数据初始值
  }    
    
  
  if (  ele_consumption>1000   || ele_consumption==0)//定标0.001度
  {
    ele_consumption=1;                 //数据初始值
    gc.WriteData_cmd =1;                 //写数据初始值
  }   
  
  if (  eles>4200000000  )//定标0.001度
  {
    eles=0;                 //数据初始值
    gc.WriteData_cmd =1;                 //写数据初始值
  }    

  if (  waning_numb>4200000000  )//
  {
    waning_numb=0;                 //数据初始值
    gc.WriteData_cmd =1;                 //写数据初始值
  }  
  
  if (  waning_numb_EN>65536  || waning_numb_EN==0)//必须开报警通道
  {
    if( modle==0)   //CS1000
    {
      waning_numb_EN=0x0733;                 //      
    }
    else if( modle==1) //CS2000
    {
      waning_numb_EN=0x0733;                 //      
    }
    else if( modle==2)   //CS3000
    {
      waning_numb_EN=0x0733;                 //      
    }
    
    else if( modle==3)  //CS3500
    {
      waning_numb_EN=0X0B11;                 //      
    }    
    
    else if( modle==10)//JHQA-01
    {
      waning_numb_EN=0X0B11;                 //      
    }    
    
    else if( modle==11) //JHBA-02
    {
      waning_numb_EN=0x0733;                 //      
    }        
    
    else if( modle==12) //JHBD-01
    {
      waning_numb_EN=0x0733;                 //      
    }       
    
    else if( modle==13) //JHBK08
    {
      waning_numb_EN=0x1222;                 //CH2      
    }   
    
    
    
    
    
// 故障码 每一位代表不同的故障点 
//0位 OUT1开路或继电器粘连       //开水阀
//1位 OUT2开路或继电器粘连       //开气阀
//2位 OUT3开路或继电器粘连       //
//3位 OUT4开路或继电器粘连       //
//4位 OUT1短路或继电器不吸合      //开水阀
//5位 OUT2开路或继电器不吸合      //开气阀
//6位 OUT3开路或继电器不吸合      //
//7位 OUT4开路或继电器不吸合      //
//8位 红外传感器失效              //开
//9位 按钮失效                    //开
//10位满水报警                    //开
//11位液位报警                    //开
//12位污水已满                    //开 
    gc.WriteData_cmd =1;                 //写数据初始值
  }    
  
  
  
  
  
  

//==============485==============
  temp_data=BaudRate_485_H*65536+BaudRate_485_L;  
  if (  temp_data!=9600 &&  temp_data!=14400&&  temp_data!=19200&&  temp_data!=38400&&  temp_data!=57600 &&  temp_data!=115200  )//
  {
    temp_data=19200;
    BaudRate_485_L=(u16)temp_data;
    BaudRate_485_H=(u16)(temp_data>>16);
    gc.WriteData_cmd =1;                 //写数据初始值
  }  

  if (  BaudRate_485_lock!=0 && BaudRate_485_lock!=1 )//
  {  
    BaudRate_485_lock=0;
    gc.WriteData_cmd =1;      
  }     
  
//==============ID==============    
  GetSTM32MCUID();
  if (  id_Hard!=u32STM32F_ID )//
  {
    id_Hard=u32STM32F_ID;                 //数据初始值   
    gc.WriteData_cmd =1;                 //写数据初始值
  }     

//==============sn==============
  u32_SN_numble=SN_numble_H*65536+SN_numble_L;  
  if ( temp_data>SYS_SN_numble+9998 || temp_data<SYS_SN_numble )//
  {
    u32_SN_numble=SYS_SN_numble;
    temp_data=u32_SN_numble;
    SN_numble_L=(u16)temp_data;
    SN_numble_H=(u16)(temp_data>>16);
    gc.WriteData_cmd =1;                 //写数据初始值
  }  


  
//==============广域网波特率==============
  temp_data=115200;
  BaudRate_internet_L=(u16)temp_data;
  BaudRate_internet_H=(u16)(temp_data>>16);


  temp_data=BaudRate_internet_H*65536+BaudRate_internet_L;  
  if ( temp_data!=9600 &&  temp_data!=14400&&  temp_data!=19200&&  temp_data!=38400&&  temp_data!=57600 &&  temp_data!=115200 )//
  {
    temp_data=115200;
    BaudRate_internet_L=(u16)temp_data;
    BaudRate_internet_H=(u16)(temp_data>>16);
    gc.WriteData_cmd =1;                 //写数据初始值
  }  
  


//初始化锁 
  if (  BaudRate_internet_lock!=0 && BaudRate_internet_lock!=1 )//
  {  
    BaudRate_internet_lock=0;
    gc.WriteData_cmd =1;      
  } 
  

  if (  delay_off_oled_panel_time>120 || delay_off_oled_panel_time<10 )
  {
    delay_off_oled_panel_time=60;                 //数据初始值
    gc.WriteData_cmd =1;                 //写数据初始值
  }   
  
  

  if (  waning_display_gap_time>3 || waning_display_gap_time<1 )
  {
    waning_display_gap_time=1;                 //数据初始值
    gc.WriteData_cmd =1;                 //写数据初始值
  }   
  
 

  
  if (  BEEP_off_time>3000 || BEEP_off_time<100 )
  {
    BEEP_off_time=1000;                 //数据初始值
    gc.WriteData_cmd =1;                 //写数据初始值
  }     

  if (  BEEP_on_time>3000 || BEEP_on_time<10 )
  {
    BEEP_on_time=30;                 //数据初始值
    gc.WriteData_cmd =1;                 //写数据初始值
  }   



  if (  Heart_Time>600 || Heart_Time<30 )  //4G心跳包间隔时间
  {
    Heart_Time=60;                 //数据初始值
    gc.WriteData_cmd =1;                 //写数据初始值
  } 
  
  
  if (  autoflushcaptime>10000 || autoflushcaptime<500 )  //自动冲洗时间
  {
    autoflushcaptime=5000;                 //数据初始值
    gc.WriteData_cmd =1;                 //写数据初始值
  }   
//  autoflushcaptime=5000;  
  
  
  if (  timestamp_H>28060  )  //时间戳最大值 20000天  
  {
    timestamp_H=0;                 //数据初始值
    timestamp_L=0;                 //数据初始值    
    gc.WriteData_cmd =1;           //写数据初始值
  }   



////=================flash=============================  

  IWDG_ReloadCounter();    /*reload*/    
//  
  flash_data();            //flash读取存储 重写操作   
//  

  
  
  
////=================运行参数=============================    
  



  out_ch1_val            =0;// 水阀开关
  out_ch2_val            =0;//   气阀开关
  
  key1_event	        =0;//   按钮开关
  key2_event	        =0;//   按钮开关
  key3_event	        =0;//   按钮开关
  key4_event	        =0;//   按钮开关
  key5_event	        =0;//   按钮开关
  key6_event	        =0;//   按钮开关
 
  KEYS_REG	        =0xff;//   按键寄存器
  LEDOUT_REG	        =0xff;//   led输出寄存器
  IN_REG	        =0xff;//   输入寄存器
  OUT_REG	        =0;//   输出寄存器  
  
  last_page              =0x00;//   上1页
  page                   =0x00;//   当前页码
  select                 =0x00;//   第1个选项
  
  
  gc.WriteData_filish = 1;//避免每次开机都保存一次
  display_onoff_last=0;
  display_onoff=1;
  
  gc.start_display_delay=0;
  
  
waning_numb=0;//上电报警代码清零
//  BEEP_EN=0;//上电允许报警
  
  
  
//====================还未启用4-20ma传感器==================  
  ad_val=0;
  
  
  
  
  
  
  
//======================uart1================================
  
  uart1.err_delay_time=200;
  uart1.Tx_gap_time=20;  //发送完上个数据包后间隔20ms期间也没有接受到通信数据

  uart1.Tx_gap_cnt=0;
  uart1.gap_time_F=0; 
  
  uart1.err_delay_cnt=0;      
  uart1.err_delay_F=0; 
  
  USART1_Init();  //数据初始后才有波特率值
//======================uart1 end================================
  
//======================uart2================================
  
  uart2.err_delay_time=200;
  uart2.Tx_gap_time=20;  //发送完上个数据包后间隔20ms期间也没有接受到通信数据

  uart2.Tx_gap_cnt=0;
  uart2.gap_time_F=0; 
  
  uart2.err_delay_cnt=0;      
  uart2.err_delay_F=0; 

  USART2_Init();  //数据初始后才有波特率值
  

  
  

  

}

